#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 关联槽1
//    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::hanelerClicked);

    // 其实我们在定义槽函数的时候，也是可以使用lambda表达式的
    connect(ui->pushButton, &QPushButton::clicked, this, [=](){
        this->setWindowTitle("按钮移动啦");
        ui->pushButton->move(200, 300);
        qDebug() << "按钮移动啦~~" << endl;
    });

    // 在Qt中使用lambda表达式使用去最好使用=来捕获所有的变量，因为Qt中德比阿亮一般都是各种控件的指针
    // 指针类型使用传值或引用的方式捕获都无所谓， 而且使用&捕获的话海埂需要关心"变量名"本身的生命周期

}

Widget::~Widget()
{
    delete ui;
}

void Widget::hanelerClicked()
{
    this->setWindowTitle("标题1");
    qDebug() << "标题1~~" << endl;
}

void Widget::hanelerClicked2()
{
    this->setWindowTitle("标题2");
    qDebug() << "标题2~~" << endl;
}


void Widget::on_pushButton_2_clicked()
{
    // 先关闭ui->pushButton与hanelerClicked的关联
    // 而如果这里没有先取消关联，则两个槽函数都会执行
//    disconnect(ui->pushButton, &QPushButton::clicked, this, &Widget::hanelerClicked);

    // 再重新关联新的槽函数
    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::hanelerClicked2);

}
